#ifndef YCEXTENSIONDECLARATION_H
#define YCEXTENSIONDECLARATION_H
#include "extensiontype.h"
#include <QString>

namespace yc {

// 扩展声明，详细描述了一个扩展
class YCEXTENSIONSHARED_EXPORT ExtensionDeclaration
{
public:
    explicit ExtensionDeclaration(const QString& type = QString()) : type_(type), stop_delay_(0) { }

    bool isValid() const { return !type_.isEmpty(); }
    const QString& type() const { return type_; }
    void setType(const QString& type) { type_ = type; }
    const QString& name() const { return name_; }
    void setName(const QString& name) { name_ = name; }
    const QString& normalIcon() const { return normal_icon_; }
    void setNormalIcon(const QString& icon) { normal_icon_ = icon; }
    const QString& hoverIcon() const { return hover_icon_; }
    void setHoverIcon(const QString& icon) { hover_icon_ = icon; }
    const QString& pressedIcon() const { return pressed_icon_; }
    void setPressedIcon(const QString& icon) { pressed_icon_ = icon; }
    const QString& disabledIcon() const { return disabled_icon_; }
    void setDisabledIcon(const QString& icon) { disabled_icon_ = icon; }
    const QString& description() const { return description_; }
    void setDescription(const QString& description) { description_ = description; }
    const QString& author() const { return author_; }
    void setAuthor(const QString& author) { author_ = author; }
    const QString& version() const { return version_; }
    void setVersion(const QString& version) { version_ = version; }
    const QString& startArgs() const { return start_args_; }
    void setStartArgs(const QString& args) { start_args_ = args; }
    int stopDelay() const { return stop_delay_; }
    void setStopDelay(int delay) { stop_delay_ = delay; }

private:
    QString type_; // 类型
    QString name_; // 名称
    QString normal_icon_; // 图标
    QString hover_icon_; // 图标
    QString pressed_icon_; // 图标
    QString disabled_icon_; // 图标
    QString description_; // 描述
    QString author_; // 作者
    QString version_; // 版本
    QString start_args_; // 启动参数
    int stop_delay_;
};

} // namespace yc

#endif // YCEXTENSIONDECLARATION_H
